// макс число кнопок в буфере для клавиатуры (сканкоды)
#define GE_KEYBOARD_MAX_KEY 512

// максимально число кнопок в обработке (мышь)
#define GE_MOUSE_MAX_BUTTON 10

// номера популярных кнопок мыши
#define GE_MOUSE_LEFT_BUTTON 0
#define GE_MOUSE_RIGHT_BUTTON 1
#define GE_MOUSE_MIDDLE_BUTTON 2

struct Device {
	
	//! Состояние клавиатуры
	struct Keyboard{

		//! Состояние нажатия клавиш
		bool key[GE_KEYBOARD_MAX_KEY];

	} keyboard;
	
	//! Мышь
	struct Mouse {

		//! Положение x
		int x;
		
		//! Положение y
		int y;
		
		//! Путь по x за последний сдвиг
		int xrel;
		
		//! Путь по y за последний сдвиг
		int yrel;
		
		//! Состояние кнопок
		bool button[GE_MOUSE_MAX_BUTTON];

	} mouse;
	
	//! Информация о openGL
	struct OpenGL{
		
		//! Версия
		struct Version{

			//! Главная версия
			int major;

			//! Подверсия
			int minor;
			
		} version;
		
	} opengl;
	
	//! Экран
	struct Screen{

		//! Ширина экрана
		int width;
		
		//! Высота экрана
		int height;
		
	} screen;

	//! Таймер
	struct Timer {

		//! Текущее сосятояние в секундах
		float seconds;
		
		//! Счетчик числа кадров, обновляется один раз в секунду
		unsigned int fps;
		
		wchar_t fps_string[20];
		
	} timer;	
	
};